package com.ruoyix.flowable.service;

import com.ruoyix.flowable.domain.vo.BpmTaskApproveVo;
import com.ruoyix.flowable.domain.vo.BpmTaskAssigneeVo;
import com.ruoyix.flowable.domain.vo.BpmTaskVo;
import com.ruoyix.flowable.domain.bo.BpmTaskBo;
import com.ruoyix.common.core.page.TableDataInfo;
import com.ruoyix.common.core.domain.PageQuery;

import java.util.List;

/**
 * 流程任务信息Service接口
 *
 * @author ruoyi
 * @date 2023-11-27
 */
public interface IBpmTaskService {


    /**
     * 查询流程任务信息列表
     */
    TableDataInfo<BpmTaskVo> queryPageList(BpmTaskBo bo, PageQuery pageQuery);



    /**
     * 查询已完成流程任务信息列表
     */
    TableDataInfo<BpmTaskVo> finishList(BpmTaskBo bo, PageQuery pageQuery);


    /**
     * 审批通过
     * @param bpmTaskApproveVo
     * @return
     */
    Boolean complete(BpmTaskApproveVo bpmTaskApproveVo);


    /**
     * 审批驳回
     */
    Boolean reject(String taskId,String comment);


    /**
     * 审批下一节点查询
     * @param taskId
     * @return
     */
    public BpmTaskApproveVo getNextNodeMessage(String taskId);


    /**
     * 委派流程任务
     *
     * @param bpmTaskApproveVo
     * @return
     */
    public Boolean delegateTask(BpmTaskApproveVo bpmTaskApproveVo);


    /**
     * 转办流程任务
     *
     * @param bpmTaskApproveVo
     * @return
     */
    public Boolean transferTask(BpmTaskApproveVo bpmTaskApproveVo);


    /**
     * 回退任务
     * @param bpmTaskApproveVo
     */
    public void returnTask(BpmTaskApproveVo bpmTaskApproveVo);

    /**
     * 自由流
     * @param bpmTaskApproveVo
     */
    public Boolean freeFlowTask(BpmTaskApproveVo bpmTaskApproveVo);


    /**
     * 查询流程定义节点
     * @param taskId
     * @return
     */
    public List<BpmTaskAssigneeVo> getNodeList(String taskId);



}
